package com.crane.framework.dto;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.Size;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

@Data
public class UpdateSelfDTO implements Serializable {
  @Serial
  @TableField(exist = false)
  private static final long serialVersionUID = 1L;

  /** 用户名 */
  @Size(max = 255, message = "编码长度不能超过255")
  @TableField(value = "username")
  @Schema(description = "用户名")
  @Length(max = 255, message = "编码长度不能超过255")
  private String username;

  /** 手机号 */
  @Size(max = 255, message = "编码长度不能超过255")
  @TableField(value = "phone")
  @Schema(description = "手机号")
  @Length(max = 255, message = "编码长度不能超过255")
  private String phone;

  /** 密码 */
  @Schema(description = "密码")
  private String password;

  /** 昵称 */
  @Size(max = 255, message = "编码长度不能超过255")
  @TableField(value = "nickname")
  @Schema(description = "昵称")
  @Length(max = 255, message = "编码长度不能超过255")
  private String nickname;

  /** 头像id */
  @Size(max = 64, message = "编码长度不能超过64")
  @TableField(value = "logo_id")
  @Schema(description = "头像id")
  @Length(max = 64, message = "编码长度不能超过64")
  private String logoId;

  /** 性别（字典：1男 2女 3沃尔玛购物袋） */
  @Size(max = 64, message = "编码长度不能超过64")
  @TableField(value = "sex")
  @Schema(description = "性别（字典：1男  2女 3沃尔玛购物袋）")
  @Length(max = 64, message = "编码长度不能超过64")
  private String sex;

  /** 真实姓名 */
  @Size(max = 255, message = "编码长度不能超过255")
  @TableField(value = "real_name")
  @Schema(description = "真实姓名")
  @Length(max = 255, message = "编码长度不能超过255")
  private String realName;

  /** 电子邮件 */
  @Size(max = 255, message = "编码长度不能超过255")
  @TableField(value = "email")
  @Schema(description = "电子邮件")
  @Length(max = 255, message = "编码长度不能超过255")
  private String email;

  /** 身份证号 */
  @Size(max = 255, message = "编码长度不能超过255")
  @TableField(value = "id_card")
  @Schema(description = "身份证号")
  @Length(max = 255, message = "编码长度不能超过255")
  private String idCard;

  /** 生日 */
  @TableField(value = "birthday")
  @Schema(description = "生日")
  private LocalDate birthday;

  /** 微信openid */
  @Size(max = 255, message = "编码长度不能超过255")
  @TableField(value = "wx_open_id")
  @Schema(description = "微信openid")
  @Length(max = 255, message = "编码长度不能超过255")
  private String wxOpenId;

  /** 微信手机号 */
  @Size(max = 255, message = "编码长度不能超过255")
  @TableField(value = "wx_phone")
  @Schema(description = "微信手机号")
  @Length(max = 255, message = "编码长度不能超过255")
  private String wxPhone;

  /** 地址 */
  @Size(max = 255, message = "编码长度不能超过255")
  @TableField(value = "address")
  @Schema(description = "地址")
  @Length(max = 255, message = "编码长度不能超过255")
  private String address;

  /** 个性签名 */
  @Size(max = 256, message = "编码长度不能超过256")
  @TableField(value = "personal_signature")
  @Schema(description = "个性签名")
  @Length(max = 256, message = "编码长度不能超过256")
  private String personalSignature;
}
